var mysql = require('mysql');

var poolCluster;
var that = {};

that.init = function(config) {

    var option = {
        connectionLimit : 10, // 系统默认值是10。Pool的最大连接数。
        queueLimit : 0, // 系统默认值是0。多少个通过getConnection()的同时请求返回错误。0，标示无限制。
        acquireTimeout : 2000, // 系统默认值为10000,从Pool获取连接的等待时间。
        waitForConnections : true, // 系统默认值为true。true，如果暂时没有可用链接，Pool会等待有连接后返回，false，立即返回一个错误。
        host: config.mysql.host,
        port: config.mysql.port,
        user: config.mysql.user,
        password: config.mysql.password,
        database: config.mysql.database
    };

    console.log('[main]resource manager mysql option_master = ' + JSON.stringify(option));

    var masterConfig = option;

    var clusterConfig = {
        removeNodeErrorCount: 5, // 系统默认值为5。某个连接池节点出现错误的次数如果超过配置的值，则从poolCluster中移除。
        defaultSelector: 'ORDER' // 默认值为RR（交替的选择）,RANDOM随机选择。ORDER，强制选择第一个。
    };

    poolCluster = mysql.createPoolCluster(clusterConfig);
    poolCluster.add('MASTER', masterConfig);

}

/**
 * 获取主库连接
 */
that.getMasterConn = function() {
    return poolCluster.of('MASTER');
};


module.exports = that;
